/**
 * 
 * 【分班】请你帮忙把同班的小朋友找出来
 * 
 * 题目描述

幼儿园两个班的小朋友在排队时混在了一起，每位小朋友都知道自己是否与前面一位小朋友同班，请你帮忙把同班的小朋友找出来。

小朋友的编号是整数，与前一位小朋友同班用Y表示，不同班用N表示。

输入描述
输入为空格分开的小朋友编号和是否同班标志。

比如：6/N 2/Y 3/N 4/Y，表示4位小朋友，2和6同班，3和2不同班，4和3同班。

其中，小朋友总数不超过999，每个小朋友编号大于0，小于等于999。

不考虑输入格式错误问题。

输出描述
输出为两行，每一行记录一个班小朋友的编号，编号用空格分开，且：

编号需按照大小升序排列，分班记录中第一个编号小的排在第一行。
若只有一个班的小朋友，第二行为空行。
若输入不符合要求，则直接输出字符串ERROR。
用例
输入	1/N 2/Y 3/N 4/Y
输出	
1 2
3 4
说明	2的同班标记为Y，因此和1同班。
3的同班标记为N，因此和1、2不同班。
4的同班标记为Y，因此和3同班。
所以1、2同班，3、4同班，输出为
1 2
3 4
输入	1/N 2/Y 3/N 4/Y 5/Y
输出	
1 2
3 4 5
说明	无

 */

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringJoiner;

/**
  * 
  题目解析
本题考察逻辑模拟。

分班逻辑：假设两个班分别为 class1 和 class2，

如果前面一个小朋友在class1的话，若紧接着后面一个小朋友

反馈 Y 的话，则在 class1
反馈 N 的话，则在 class2
如果前面一个小朋友在class2的话，若紧接着后面一个小朋友

反馈 Y 的话，则在 class2
反馈 N 的话，则在 class1
关于校验要求，如果不符合下面要求，打印“ERROR”：

小朋友总数不超过999
999 >= 小朋友编号 > 0
同班标志只能是Y或N字符
对于第一个小朋友反馈，理论上只能是N，因为他前面没有其他小朋友
关于打印要求：

一班、二班需要各自升序，且比较出第一个小朋友编号小的，则首先打印
如果二班没有小朋友，则打印空行

  */
public class 分班请你帮忙把同班的小朋友找出来 {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
 
        String[][] infos = Arrays.stream(sc.nextLine().split(" ")).map(s -> s.split("/")).toArray(String[][]::new);
 
        // 小朋友总数不超过999
        if (infos.length > 999) {
            System.out.println("ERROR");
            return;
        }
 
        ArrayList<Integer> class1 = new ArrayList<>();
        ArrayList<Integer> class2 = new ArrayList<>();
 
        boolean isClass1 = false;
 
        for (int i = 0; i < infos.length; i++) {
            String[] info = infos[i];
 
            // 每个小朋友编号大于0，小于等于999
            int id = Integer.parseInt(info[0]);
            if (id <= 0 || id > 999) {
                System.out.println("ERROR");
                return;
            }
 
            // 与前一位小朋友同班用Y表示，不同班用N表示
            String flag = info[1];
            if (!"Y".equals(flag) && !"N".equals(flag)) {
                System.out.println("ERROR");
                return;
            }
 
            // 第一个小朋友前面没有人，因此第一个小朋友不可能和前面不存在的人同班
            // 实际考试可以去掉该校验试试
            if (i == 0 && "Y".equals(flag)) {
                System.out.println("ERROR");
                return;
            }
 
            if ("Y".equals(flag) && isClass1 || "N".equals(flag) && !isClass1) {
                isClass1 = true;
                class1.add(id);
            } else {
                isClass1 = false;
                class2.add(id);
            }
        }
 
        // 编号需按照大小升序排列
        class1.sort((a, b) -> a - b);
        class2.sort((a, b) -> a - b);
 
        // 分班记录中第一个编号小的排在第一行
        // class1 对应 第一行
        if (class1.isEmpty() || !class2.isEmpty() && class1.get(0) > class2.get(0)) {
            ArrayList<Integer> tmp = class1;
            class1 = class2;
            class2 = tmp;
        }
 
        System.out.println(join(class1, " "));
        System.out.println(join(class2, " "));
    }
 
    public static String join(ArrayList<Integer> list, String delimiter) {
        StringJoiner sj = new StringJoiner(delimiter);
 
        for (Integer i : list) {
            sj.add(i + "");
        }
 
        return sj.toString();
    }
}
